import request from './request'
import route from '../router/index'
import store from '../store/index'
import {
  ElMessage
} from 'element-plus'

const wise = {
  checkLoginStatus(callback, msg) {
    if (!localStorage.getItem('computer-access-token')) {

      store.commit('setLoginSign', true)
      ElMessage({
        message: msg || '您还没有登录哦QaQ.',
        type: 'warning',
      })
      return
    }

    callback()
  },
  gotoPage: (backPage, routerName, params) => {
    localStorage.setItem('backPage', JSON.stringify(backPage));
    route.push({
      name: routerName,
      params: params
    })
  },

  getAccountInformation(goReq) {
    if (localStorage.getItem('computer-access-token') || goReq) {
      request.get('/computer/getAccountInformation').then(res => {
        store.commit('setUserInformation', res.result)
      })
    }
  },

  /**
   * 对ASCII排序
   * @param {*} obj 
   * @returns 
   */
  sort_ascii(obj) {
    let arr = new Array();
    let num = 0;
    let objArr = obj.split("");
    let sortArr = objArr.sort();
    // 排序
    let oneKey = sortArr[3];
    let twoKey = sortArr[7];
    let threeKey = sortArr[15];
    sortArr[3] = threeKey;
    sortArr[7] = oneKey;
    sortArr[15] = twoKey;
    return sortArr.join("");
  },

  welcome: () => {
    const arr = ['休息一会儿吧', '准备吃什么呢?', '要不要打一把 DOTA', '我猜你可能累了']
    const index = Math.floor(Math.random() * arr.length)
    return arr[index]
  },


  /***
   * 时间格式化
   * @param date 时间戳传数字 new Date()格式传字符串
   * @param fmt 需要格式化后的格式（yyyy-MM-dd hh:mm:ss）
   * @return {string}
   */
  formatDate: (date, fmt = 'yyyy-MM-dd hh:mm:ss') => {
    // eslint-disable-next-line no-undef
    if (!date) {
      return date
    }
    // eslint-disable-next-line no-redeclare
    var date = new Date(date)
    if (date.getFullYear() === 1970) {
      return '暂无'
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    var o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds()
    }
    for (var k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        var str = o[k] + ''
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length))
      }
    }
    return fmt
  },

  // 判断是否为手机（true）或电脑端（false）
  isMobile() {
    // var userAgentInfo = navigator.userAgent;
    // var mobileAgents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
    // var mobile_flag = false;
    // //根据userAgent判断是否是手机
    // for (var v = 0; v < mobileAgents.length; v++) {
    // 	if (userAgentInfo.indexOf(mobileAgents[v]) > 0) {
    // 		mobile_flag = true;
    // 		break;
    // 	}
    // }
    // var screen_width = window.screen.width;
    // var screen_height = window.screen.height;

    // //根据屏幕分辨率判断是否是手机
    // if (screen_width > 325 && screen_height < 750) {
    // 	mobile_flag = true;
    // }
    // return mobile_flag;


    // 根据userAgent判断是否是手机
    if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|BrowserNGwebos|Symbian|Windows Phone)/i)) {
      return true;
    } else {
      return false;
    }
  },

  //禁止滚动
  bodyStop() {
    var mo = function (e) {
      e.preventDefault();
    };
    document.body.style.overflow = 'hidden';
    document.addEventListener("touchmove", mo, false); //禁止页面滑动
  },
  /***取消滑动限制***/
  bodyMove() {
    var mo = function (e) {
      e.preventDefault();
    };
    document.body.style.overflow = ''; //出现滚动条
    document.removeEventListener("touchmove", mo, false);
  },

  /***
   * 时间格式化工具
   * @param timestamp 时间戳传数字 new Date()格式传字符串
   * @return {string}
   */
  timeFormat(timestamp) {
    if (!timestamp) {
      return ''
    }
    var date = new Date(timestamp)
    if (date.getFullYear() === 1970) {
      return '暂无'
    }
    if (typeof timestamp === 'string') {
      timestamp = new Date(timestamp).getTime()
    }
    // 补全为13位
    var arrTimestamp = (timestamp + '').split('')
    for (var start = 0; start < 13; start++) {
      if (!arrTimestamp[start]) {
        arrTimestamp[start] = '0'
      }
    }
    timestamp = arrTimestamp.join('') * 1

    var minute = 1000 * 60
    var hour = minute * 60
    var day = hour * 24
    var month = day * 30
    var now = new Date().getTime()
    var diffValue = now - timestamp

    // 如果本地时间反而小于变量时间
    if (diffValue < 0) {
      return '不久前'
    }

    // 计算差异时间的量级
    var monthC = diffValue / month
    var weekC = diffValue / (7 * day)
    var dayC = diffValue / day
    var hourC = diffValue / hour
    var minC = diffValue / minute

    // 数值补0方法
    var zero = function (value) {
      if (value < 10) {
        return '0' + value
      }
      return value
    }

    // 使用
    if (monthC > 12) {
      // 超过1年，直接显示年月日
      return (function () {
        return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) +
          '日'
      })()
    } else if (monthC >= 1) {
      return parseInt(monthC) + '月前'
    } else if (weekC >= 1) {
      return parseInt(weekC) + '周前'
    } else if (dayC >= 1) {
      return parseInt(dayC) + '天前'
    } else if (hourC >= 1) {
      return parseInt(hourC) + '小时前'
    } else if (minC >= 1) {
      return parseInt(minC) + '分钟前'
    }
    return '刚刚'
  },

  /***
   * 金额格式化工具
   * @param s 传入的float数字
   * @param n 希望返回小数点几位 
   * @return {string}
   */
  priceFormat(s, n) {
    if (s == undefined || s == null || s == '') {
      return 0.00
    }
    let num = ''
    n = n || n === 0 ? n : 2;
    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
    let l = s.split(".")[0].split("").reverse(),
      r = s.split(".")[1],
      t = "";
    for (let i = 0; i < l.length; i++) {
      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
    }
    if (n == 0) {
      num = t.split("").reverse().join("");
    } else {
      num = t.split("").reverse().join("") + "." + r;
    }
    return num
  },

  //上传图片接口
  uploadImage(file) {
    const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg'
    // const isLt2M = file.size / 1024 / 1024 < 5
    if (!isJpgOrPng) {
      ElMessage({
        message: '图片格式不正确.',
        type: 'warning',
      })
      return
    }
    // if (!isLt2M) {
    // 	ElMessage({
    // 		message: '图片最大为5MB.',
    // 		type: 'warning',
    // 	})
    // 	return Promise.reject()
    // }
    let headers = {
      'Content-Type': 'multipart/form-data',
      // 'up_iv_account': 'UPLOAD_IMAGE_VIDEO_VALUE'
    }
    let formDate = new FormData();
    formDate.append("file", file);
    return new Promise((resolve, reject) => {
      request.post('/axh/upload/iv', formDate, headers).then(res => {
        resolve(res)
      }).catch((err) => {
        reject(err)
        ElMessage({
          message: '图片上传失败！.',
          type: 'warning',
        })
      })
    })
  },


  // url拼接参数转换
  urlToJson(url) {
    let obj = {},
      index = url.indexOf('?'),
      params = url.substr(index + 1);
    if (index != -1) { // 有参数时
      let parr = params.split('&');
      for (let i of parr) {
        let arr = i.split('=');
        obj[arr[0]] = arr[1]
      }
    }
    return obj;
  }


  // 参数加密
  // encode(str) {
  // 	return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
  // 		function toSolidBytes(match, p1) {
  // 			return String.fromCharCode('0x' + p1);
  // 		}));
  // },
  // // 参数解密
  // decode(str) {
  // 	// Going backwards: from bytestream, to percent-encoding, to original string.
  // 	return decodeURIComponent(atob(str).split('').map(function (c) {
  // 		return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  // 	}).join(''));
  // }

  /***
   * 复制内容
   * @param 需要复制的内容 时间戳传数字 data格式传字符串
   */
  // copyText(data) {
  //     const input = document.createElement('input') // js创建一个input输入框
  //     input.value = data // 将需要复制的文本赋值到创建的input输入框中
  //     document.body.appendChild(input) // 将输入框暂时创建到实例里面
  //     input.select() // 选中输入框中的内容
  //     document.execCommand('Copy') // 执行复制操作
  //     document.body.removeChild(input) // 最后删除实例中临时创建的input输入框，完成复制操作
  //     Message({
  //         message: '复制成功',
  //         type: 'success'
  //     })
  // },

  // 上传图片接口
  // uploadImage: (file) => {
  //     const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'
  //     const isLt2M = file.size / 1024 / 1024 < 5
  //     if (!isJpgOrPng) {
  //         Message.error('图片格式不正确')
  //         return
  //     }
  //     if (!isLt2M) {
  //         Message.error('图片最大为5MB!')
  //         return
  //     }
  //     const formData = new FormData()
  //     formData.append('file', file)
  //     return new Promise((resolve, reject) => {
  //         request({
  //             url: '/api/upload/iv',
  //             method: 'post',
  //             headers: {
  //                 'Content-Type': 'multipart/form-data',
  //                 'up_iv_account': 'UPLOAD_IMAGE_VIDEO_VALUE'
  //             },
  //             data: formData
  //         }).then(res => {
  //             resolve(res)
  //             // eslint-disable-next-line handle-callback-err
  //         }).catch((err) => {
  //             Message.error('图片上传失败！')
  //         })
  //     })
  // },

}

export default wise